Skip to content

mcpp:plugins 0.1.0: the official rule collection, selected by features - #1

Merged
Sunrisepeak merged 3 commits into
mainfrom
feat/plugins-0.1.0
Sep 5, 2026
Merged

mcpp:plugins 0.1.0: the official rule collection, selected by features#1
Sunrisepeak merged 3 commits into
mainfrom
feat/plugins-0.1.0

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

What this is

One package, mcpp:plugins, carrying the build plugins the mcpp project maintains. A consumer selects the members it needs through features and imports each under the module name the member declares:

[dependencies.mcpp]
plugins = { version = "0.1.0", features = ["rules-spirv"], host-module = true }

Members in 0.1.0: mcpp.rules.cuda (feature rules-cuda, mcpp >= 2026.9.5.2) and mcpp.rules.spirv (feature rules-spirv, mcpp >= 2026.9.5.3). Both were previously rule packages under examples/ in the mcpp repository; that placement is withdrawn.

Naming

mcpp.rules.<x> for rule packages, mcpp.tools.<x> for build-time utilities, mcpp.plugins for the lib root. mcpp.build.* is the engine's own module family and is not used.

Engine dependency

A host-module package contributes every module interface unit among its feature-resolved sources (mcpp 2026.9.5.3, e2e 610 in mcpp-community/mcpp). The CI pin MCPP_VERSION: 2026.9.5.3 therefore goes green once that release is published; until then the workflow's download step fails by construction.

Verification on the author's machine

  • tests/spirv-consumer: magic=07230203 words=370
  • tests/cuda-consumer: 12 24 36 48 on the CPU variant and on the RTX 4080 through the clang route

clang's own CUDA wrapper includes curand_mtgp32_kernel.h unconditionally.
On a developer machine the header was found in the host's /usr/include and
the dependency went unnoticed; the CI runner, with no host CUDA, refused
it. The rule now adds xim:libcurand's include directory to the device
compile and refuses the clang route without it, naming the
[xlings.workspace] entry to add. The consumer fixture declares it.
curand_mtgp32_kernel.h includes <nv/target> from CCCL, which the 12.x
toolkits ship as the separate cuda-cccl package and which the host's
/usr/include had supplied silently as well. The rule adds the payload's
include directory (and include/cccl for the 13.x layout) and refuses the
clang route without it, naming both entries; the fixture declares it.
@Sunrisepeak
Sunrisepeak merged commit be6d7ce into main Sep 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants